Skip to content

feat: add AgentManifest for declarative capability profiles - #2270

Closed
ImenGBY wants to merge 1 commit into
strands-agents:mainfrom
ImenGBY:feature/agent-manifest
Closed

feat: add AgentManifest for declarative capability profiles#2270
ImenGBY wants to merge 1 commit into
strands-agents:mainfrom
ImenGBY:feature/agent-manifest

Conversation

@ImenGBY

@ImenGBY ImenGBY commented May 9, 2026

Copy link
Copy Markdown

Summary

Add an optional AgentManifest to the Agent class that formally declares an agent's input requirements, output types, trigger conditions, and tool capabilities. This enables platforms to manage agent lifecycle, resolve dependencies automatically, and compose agents into chains without custom wiring.

Motivation

Today, a Strands agent is defined by its runtime configuration: model, tools, system prompt. There is no way to declare what an agent needs or what it produces without inspecting its code or documentation. This means every multi-agent deployment requires manual dependency tracking, custom wiring between agents, and runtime failures as the only signal that something is missing.

This PR adds a declarative manifest that solves three problems:

  1. No dependency declaration: a platform can now check if an agent's inputs are available before running it
  2. No composability contract: agents can be chained by matching output events to input events, no custom code
  3. No lifecycle management: agents can be registered dormant and activate automatically when dependencies arrive

Changes

  • New: src/strands/agent/manifest.py with AgentManifest, InputContract, OutputContract, Trigger dataclasses
  • Modified: src/strands/agent/agent.py added optional manifest parameter to Agent.init
  • Modified: src/strands/agent/__init__.py exports new classes
  • New: tests/strands/agent/test_manifest.py with 24 unit tests (all passing)
  • New: rfcs/0001-agent-manifest.md with full design rationale and usage examples

Backward Compatibility

  • manifest parameter is optional and defaults to None
  • Existing agents without manifests work exactly as before
  • No breaking changes to any existing API
  • Zero impact on prompt caching (manifest is never sent to the model)

Tests

24 unit tests covering creation, serialization, deserialization, file loading, roundtrip, and dependency satisfaction checking.

Add optional AgentManifest to the Agent class that formally declares
input requirements, output types, trigger conditions, and tool
capabilities. This enables platforms to manage agent lifecycle,
resolve dependencies automatically, and compose agents into chains
without custom wiring.

New files:
- src/strands/agent/manifest.py: AgentManifest, InputContract,
  OutputContract, Trigger dataclasses with serialization support
- tests/strands/agent/test_manifest.py: 24 unit tests
- rfcs/0001-agent-manifest.md: Design rationale and usage examples

Modified files:
- src/strands/agent/agent.py: Added manifest parameter to Agent.__init__
- src/strands/agent/__init__.py: Export new classes

The manifest is purely declarative metadata. It does not change agent
execution behavior and has zero impact on prompt caching. Existing
agents without manifests work exactly as before.
@github-actions github-actions Bot added the size/l label May 9, 2026
@ImenGBY
ImenGBY had a problem deploying to manual-approval May 9, 2026 23:36 — with GitHub Actions Failure
@ImenGBY
ImenGBY had a problem deploying to manual-approval May 9, 2026 23:36 — with GitHub Actions Failure
@yonib05 yonib05 added area-multiagent Multi-agent related area-devx Developer experience improvements python Pull requests that update python code enhancement New feature or request labels May 27, 2026
@yonib05 yonib05 added area-config Related to config-based agents or mcp-config area-agent Related to the agent class or general agent questions and removed enhancement New feature or request python Pull requests that update python code area-devx Developer experience improvements area-multiagent Multi-agent related labels Jun 9, 2026
@gautamsirdeshmukh gautamsirdeshmukh added the autoclose in 7 days The issue will close in 7 days if no additional comment is added. label Jun 25, 2026
@JackYPCOnline

Copy link
Copy Markdown
Contributor

Hi @ImenGBY, thank you for submitting this PR. Could you please also create a feature request as an issue to explain your use case first, so that we can better understand your perspective?

@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

This issue has been automatically closed as it was marked for auto-closure by the team and no additional responses was received within 7 days.

@ImenGBY

ImenGBY commented Jul 20, 2026

Copy link
Copy Markdown
Author

Hi @JackYPCOnline — apologies for the late response! I've created the feature request issue as requested: #3355. It covers the motivation, use case, and how both RFCs (this one + #2273) fit together. Would it be possible to reopen this PR, or should I re-submit? Happy to iterate on scope.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-agent Related to the agent class or general agent questions area-config Related to config-based agents or mcp-config autoclose in 7 days The issue will close in 7 days if no additional comment is added. size/l

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants